using System;

namespace Xfinity.Weapons
{
    /// <summary>
    /// A description of a type of projectile.
    /// </summary>
    [Serializable]
    public class ProjectileProperties
    {
        
        private string name;
        private bool nameBeenSet;
        /// <summary>
        /// Gets or sets the name.
        /// </summary>
        /// <value>The name.</value>
        public string Name
        {
            get { return name; }
            set { if (!nameBeenSet) { name = value; nameBeenSet = true; } }
        }

        private float mass;
        bool mSet;
        /// <summary>
        /// Gets or sets the mass.
        /// </summary>
        /// <value>The mass.</value>
        public float Mass
        {
            get { return mass; }
            set { if (!mSet) { mass = value; mSet = true; } }
        }
        
        private float diameter;
        bool dSet;
        /// <summary>
        /// Gets or sets the diameter.
        /// </summary>
        /// <value>The diameter.</value>
        public float Diameter
        {
            get { return diameter; }
            set { if (!dSet) { diameter = value; dSet = true; } }
        }

        private float length;
        bool lSet;
        /// <summary>
        /// Gets or sets the length.
        /// </summary>
        /// <value>The length.</value>
        public float Length
        {
            get { return length; }
            set { if (!lSet) { length = value; lSet = true; } }
        }

        private float muzzleVelocity;
        bool mvSet;
        /// <summary>
        /// Gets or sets the muzzle velocity.
        /// </summary>
        /// <value>The muzzle velocity.</value>
        public float MuzzleVelocity
        {
            get { return muzzleVelocity; }
            set { if (!mvSet) { muzzleVelocity = value; mvSet = true; } }
        }
    }
}
